{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Rental Listing Inquiries Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# path to where the data lies\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "#train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Variable Identification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "选择该数据集是因为的数据特征单一，我们可以在特征工程方面少做些工作，集中精力放在参数调优上"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Target 分布，看看各类样本分布是否均衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x8e2fa58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('target');\n",
    "pyplot.ylabel('Number of interest_level');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "每类样本分布不是很均匀，所以交叉验证时也考虑各类样本按比例抽取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再次调整弱分类器数目"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 3\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "        \n",
    "        print cvresult\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds4_2_3_699.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        test_means = cvresult['test-mlogloss-mean']\n",
    "        test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-mlogloss-mean']\n",
    "        train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators4_2_3_699.png' )\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "0              1.039030           0.000457             1.038030   \n",
      "1              0.989291           0.000522             0.987352   \n",
      "2              0.945882           0.000679             0.943149   \n",
      "3              0.908519           0.000498             0.905028   \n",
      "4              0.876974           0.000704             0.872467   \n",
      "5              0.848852           0.001035             0.843520   \n",
      "6              0.824486           0.001511             0.818404   \n",
      "7              0.803252           0.001756             0.796272   \n",
      "8              0.784635           0.001761             0.776728   \n",
      "9              0.768205           0.001874             0.759580   \n",
      "10             0.753316           0.001766             0.743932   \n",
      "11             0.740046           0.001871             0.729882   \n",
      "12             0.728552           0.001696             0.717535   \n",
      "13             0.718186           0.001678             0.706280   \n",
      "14             0.708868           0.001783             0.696136   \n",
      "15             0.700586           0.001844             0.687078   \n",
      "16             0.693084           0.001879             0.678890   \n",
      "17             0.686348           0.001932             0.671406   \n",
      "18             0.680539           0.002060             0.664755   \n",
      "19             0.675231           0.002122             0.658705   \n",
      "20             0.670295           0.002316             0.653130   \n",
      "21             0.665945           0.002317             0.647985   \n",
      "22             0.661974           0.002435             0.643280   \n",
      "23             0.658557           0.002222             0.639072   \n",
      "24             0.655036           0.002010             0.635039   \n",
      "25             0.651777           0.002152             0.630897   \n",
      "26             0.648900           0.002260             0.627418   \n",
      "27             0.646314           0.002286             0.624205   \n",
      "28             0.643836           0.002429             0.621055   \n",
      "29             0.641491           0.002466             0.618021   \n",
      "..                  ...                ...                  ...   \n",
      "189            0.591755           0.002367             0.484454   \n",
      "190            0.591757           0.002347             0.484025   \n",
      "191            0.591759           0.002423             0.483559   \n",
      "192            0.591722           0.002432             0.483032   \n",
      "193            0.591618           0.002422             0.482523   \n",
      "194            0.591584           0.002425             0.482147   \n",
      "195            0.591552           0.002458             0.481621   \n",
      "196            0.591569           0.002487             0.481120   \n",
      "197            0.591498           0.002410             0.480580   \n",
      "198            0.591444           0.002396             0.480158   \n",
      "199            0.591489           0.002419             0.479781   \n",
      "200            0.591558           0.002390             0.479418   \n",
      "201            0.591526           0.002391             0.478880   \n",
      "202            0.591562           0.002379             0.478424   \n",
      "203            0.591560           0.002356             0.477880   \n",
      "204            0.591494           0.002310             0.477376   \n",
      "205            0.591426           0.002316             0.476935   \n",
      "206            0.591451           0.002333             0.476591   \n",
      "207            0.591466           0.002334             0.476134   \n",
      "208            0.591498           0.002432             0.475701   \n",
      "209            0.591490           0.002373             0.475210   \n",
      "210            0.591539           0.002461             0.474799   \n",
      "211            0.591525           0.002406             0.474327   \n",
      "212            0.591468           0.002450             0.473929   \n",
      "213            0.591462           0.002465             0.473396   \n",
      "214            0.591389           0.002452             0.473024   \n",
      "215            0.591357           0.002424             0.472520   \n",
      "216            0.591306           0.002544             0.472015   \n",
      "217            0.591354           0.002527             0.471682   \n",
      "218            0.591354           0.002525             0.471216   \n",
      "\n",
      "     train-mlogloss-std  \n",
      "0              0.000596  \n",
      "1              0.000614  \n",
      "2              0.000703  \n",
      "3              0.000520  \n",
      "4              0.000447  \n",
      "5              0.000276  \n",
      "6              0.000225  \n",
      "7              0.000110  \n",
      "8              0.000264  \n",
      "9              0.000142  \n",
      "10             0.000435  \n",
      "11             0.000244  \n",
      "12             0.000527  \n",
      "13             0.000676  \n",
      "14             0.000613  \n",
      "15             0.000645  \n",
      "16             0.000698  \n",
      "17             0.000795  \n",
      "18             0.000837  \n",
      "19             0.000835  \n",
      "20             0.000650  \n",
      "21             0.000808  \n",
      "22             0.000768  \n",
      "23             0.001066  \n",
      "24             0.001199  \n",
      "25             0.001157  \n",
      "26             0.001226  \n",
      "27             0.001204  \n",
      "28             0.001160  \n",
      "29             0.001133  \n",
      "..                  ...  \n",
      "189            0.001472  \n",
      "190            0.001403  \n",
      "191            0.001421  \n",
      "192            0.001398  \n",
      "193            0.001521  \n",
      "194            0.001478  \n",
      "195            0.001554  \n",
      "196            0.001614  \n",
      "197            0.001679  \n",
      "198            0.001695  \n",
      "199            0.001660  \n",
      "200            0.001642  \n",
      "201            0.001551  \n",
      "202            0.001545  \n",
      "203            0.001548  \n",
      "204            0.001546  \n",
      "205            0.001338  \n",
      "206            0.001223  \n",
      "207            0.001191  \n",
      "208            0.001132  \n",
      "209            0.001114  \n",
      "210            0.001105  \n",
      "211            0.001065  \n",
      "212            0.001083  \n",
      "213            0.001137  \n",
      "214            0.001156  \n",
      "215            0.001130  \n",
      "216            0.001119  \n",
      "217            0.001133  \n",
      "218            0.001174  \n",
      "\n",
      "[219 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.495499909105\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b34978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#调整max_depth和min_child_weight之后再次调整n_estimators(6,4)\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=219,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train, cv_folds = kfold)\n",
    "#from sklearn.model_selection import cross_val_score\n",
    "#results = cross_val_score(xgb2_3, X_train, y_train, metrics='mlogloss', cv=kfold)\n",
    "#print results\n",
    "#print(\"CV logloss: %.2f%% (%.2f%%)\" % (results.mean()*100, results.std()*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nGl1vPQiNmibnFi2rnVwLgB0tSZIkSb/VfI1k/8Qn4sJr1fVh2aIkPrw7TBwCv/xY/n3q6ZBCO1qS\nJEmSKta2M6zfA3a/FGa/Cjf3iePzP4dn/wov/hu2OTLdHHOMHS1JkiSpPstk8owQYK2tkuN9roTf\nbQZLfoIpI5P47Fchiiq+V4F3uiy0JEmSJFVPp6Nh4CQ49kHYsHcSv/1guHHXeOr45UvTyi5VDh2U\nJEmSVH0hwEa7QftucFnbONawCcydBg+cDC3bZna/JQuT+1w4t2qLMecgCy1JkiRJv1XVWQrLcsYU\neP1umHIjzJ+bxEcfBpvuDRv3ybwAyzMWWpIkSZKya5XVofef4pkKZ4yGJ86N459OjLdn/gKt10vO\nr+x9rjzkO1qSJEmSqi6TyTMaN/31bIR7/A067AoNV4IfP03iN/SCSSMqniY+z9jRkiRJklQ3uv4+\n7nIt/gk+eBruPymOfzcLxpwPYy+Fjgemm2OW2NGSJEmSVHOZdLqaNIdN9kqO+1wOa3SEZb/E73aV\nWPBF7eRaByy0JEmSJKWrywlw2kQ46Wno2DeJr7JGejnVkIWWJEmSpPSFEE8Rf+CwJNagYXr51JDv\naEmSJEmqPTWZJj6P2dGSJEmSpCyzoyVJkiSp7hV4p8uOliRJkiRlmR0tSZIkSbmjQDpddrQkSZIk\nKcsstCRJkiQpyyy0JEmSJCnLLLQkSZIkKcsstCRJkiQpyyy0JEmSJCnLLLQkSZIkKcsstCRJkiQp\nyyy0JEmSJCnLLLQkSZIkKcsstCRJkiQpyyy0JEmSJCnLLLQkSZIkKcsstCRJkiQpyyy0JEmSJCnL\nLLQkSZIkKcsstCRJkiQpyyy0JEmSJCnLLLQkSZIkKcsstCRJkiQpyyy0JEmSJCnLLLQkSZIkKcss\ntCRJkiQpyyy0JEmSJCnLLLQkSZIkKcsstCRJkiQpyyy0JEmSJCnLLLQkSZIkKcsstCRJkiQpyyy0\nJEmSJCnLLLQkSZIkKcsstCRJkiQpyyy0JEmSJCnLGqWdQC6bP39+2ilIkiRJSlF1a4IQRVGWU8l/\nIYR1gDlp5yFJkiQpZ7SLoujzqp5soVWGEEIA2gIL0s4FaEFc9LUjN/JRdvl8C5fPtrD5fAuXz7Zw\n+WwLW20/3xbA3CiD4smhg2Uo/h+wytVqbYprPgAWRFHkWMYC4/MtXD7bwubzLVw+28Llsy1sdfB8\nM76nk2FIkiRJUpZZaEmSJElSlllo5b7FwKXFf6rw+HwLl8+2sPl8C5fPtnD5bAtbzj1fJ8OQJEmS\npCyzoyVJkiRJWWahJUmSJElZZqElSZIkSVlmoSVJkiRJWWahlZIQQs8QwmMhhLkhhCiEcNAKn4cQ\nwiXFn/8SQhgXQui4wjmrhhBuDyHMK95uDyG0rtufRCuq6NmGEBqHEP4dQngzhLCw+JxRIYS2K9zD\nZ5ujKvvdXeHc64vPOXuFuM83B1Xl2YYQNg8hPFr83BaEECaFENqX+rxJCGFoCOHb4t/xR0MI7er2\nJ9GKqvDv3OYhhGEhhDnF/859J4Rw2grn+GxzUAjhghDClOLfx69DCA+HEDZd4ZxKn10IoX3x/0cW\nFp83JISwUt3+NFpRZc83hLBa8bN9L4Twcwjhs+Jn12qF+6TyfC200rMK8DpwRjmf/xE4t/jzrsCX\nwLMhhBalzrkT6ATsVbx1Am6vrYRVZRU925WBbYG/F//ZF9gEeHSF83y2uauy310Aiv8itwMwt4yP\nfb65qcJnG0LoAEwA3gV6A9sQ/y4vKnXaYOBg4EigB9AceDyE0LDWslZVVPZ7ezXx7+KxwObFx0ND\nCAeWOsdnm5t6AdcC3YA9gEbAMyGEVUqdU+GzK/7zCeL/n/QoPu8Q4L919DOofJU937bF23nAVsCJ\nxL/LN5XcINXnG0WRW8obEAEHlToOwBfAn0rFmgA/AgOKjzcvvm6HUud0K45tmvbP5Fb2sy3nnK7F\n57X32ebXVt7zBdYB5gAdgU+As0t95vPNg62sZwvcDdxewTWtgCXAEaVibYHlQJ+0fya3Cp/tTOCv\nK8SmAn/32ebXBvyu+Bn3rOqzA/YuPm5b6pwjif8jSsu0fya38p9vOeccRryWVqO0n68drdy0AbAW\n8ExJIIqixcCLwI7Foe7AvCiKXi11ziRgXqlzlB9aEf9D48fiY59tHgshNCDuTl0RRdFbZZzi881D\nxc91X+D9EMLTxUNYXl1hCFoXoDG//mf3XOK/xPtsc9sE4IAQwjohtgvxaIOniz/32eaPkiFj3xf/\nWZVn1x2YWRwv8TTxf+TuUqvZKlMrPt/yzpkfRdGy4uPUnq+FVm5aq/jPr1aIf1Xqs7WAr8u49utS\n5yjHhRCaAv8C7oyiaH5x2Geb3/4ELAOGlPO5zzc/rUE83Oh8YAywJ/AQ8GAIoVfxOWsBS6Io+mGF\na0v/s1u5aRDwNnEnegnxMx4YRdGE4s99tnkghBCAq4AJURTNLA5X5dmtxQp/5yo+fwk+35xRzvNd\n8Zw2wF+B60uFU3u+jWrz5qqxaIXjsEJsxc/LOkc5KoT/b+/+g6ys6jiOvz8SJIVSZKjTJDgqWFFS\nWE4UigI6wxSmluOUk9Q/No1jatkPE8Jo+rWamVtTULGTZsI4Yw5USqjlJPxBMgoJCDWujsUSQfIb\nWfDbH+fcfHzYvbvEw9677ec1c2b3Puc89znPfPfuc7/3nOdcDSZNRToG+Gyp2rHthyRNAD4HvCfy\n3IRuOL79T+2DyQci4vb8+5OSJgKfIc046I5j2/yuJU3hnQE8B5wL/EjSpohYVmc/x7a5tALvIt2H\n0xO/p+p/6sZX0vGke7HWAreUqhsSX49oNaeO/LOcZY/klYy8Azixi33fzKEjYdZkcpK1iDRNdFph\nNAsc2/5sEul1+rykA5IOAKOA2yS15zaOb//0L9JI5drS9nVAbdXBDmCIpDeW2hT/d1uTkTQU+CZw\nQ0QsjojVEdEKLCTdYA+ObdOTdCcpUT4/Il4oVPUmdh2U3nPl9oNxfJtCnfjW6o8jjUTvAi6JiM5C\ndcPi60SrOT1L+qOYVtuQl6A8D1ieN60Ahkt6X6HNOaR5qcuxplVIss4ApkbE1lITx7b/uov0adv4\nQvkH0AJclNs4vv1QROwHVgJjS1VjSCMgkBZP6OTV/7tPBsbh2Dazwbm8XNp+kFfeJzm2TSrfU9dK\nWsX3goh4ttSkN7FbAYzL22suJC2o8MTR6rv1rBfxrY1kLSVNBZwREftKTRoWX08dbBBJw4DTC5tO\nlTQe2BYRz0v6PnCTpI3ARuAmYA9pWWgiYp2kB4H5kq7OzzEPWBIRz/TZidgh6sWW9Kb7PtLS7h8C\nBkmqfcqyLSL2O7bNrafXLrC11L4T6KjFzvFtXr2IbQuwUNJjwKOkJYQ/TFrqnYjYLulnpBHMraTX\n/K3AGqDe9DM7ynpxzf0j0CJpLylxPg/4JOlrVhzb5vZD4OPAxcDOwjV1e0Ts7WXslpJGq++SdCMw\nIreZX5pxYn2vbnzzSNZS0tfnXAkcnxMvgC0RcZBGxrfRyzQO1EK6MEcXpS3XC5hDWuZ9H2n+/7jS\nc4wA7gZ25HI38IZGn9tAL/ViC4zupi6AyY5t85eeXrtdtG+nsLy749u8pTexBT5N+vBrL/AkcHHp\nOY4F7iQl3HuAxcBbG31uA7304pp7ErAA+HuO7XpSkiXHtrlLnWvqzMOJHWkK8JJcvzW3f22jz2+g\nl57iW+e1HcDoRsdX+eBmZmZmZmZWEd+jZWZmZmZmVjEnWmZmZmZmZhVzomVmZmZmZlYxJ1pmZmZm\nZmYVc6JlZmZmZmZWMSdaZmZmZmZmFXOiZWZmZmZmVjEnWmZmZmZmZhVzomVmZgOapHZJ1zW6H2Zm\n9v/FiZaZmQ0IkmZKerGLqvcC8/rg+E7ozMwGkNc0ugNmZmaNFBFbGt2HwyFpSETsb3Q/zMysPo9o\nmZlZn5L0B0k/kPRdSdskdUia08t9h0uaJ+mfknZIekTSWYX6syQ9Kmlnrn9C0tmSJgMLgOGSIpc5\neZ9XjTTluqslLZG0R9I6Se+XdHru+25JKySdVtjnNEkPSNosaZeklZKmFs8ZGAXcXjt+oe4ySU9L\nein35fOlc26XdLOkNknbgfmShkhqlbRJ0r7c5iuHFQgzMzuqnGiZmVkjXAXsBs4BvgjMljSt3g6S\nBPwGOAmYDkwAVgEPSxqRm/0SeIE0HXAC8G2gE1gOXAfsAE7O5dY6h5sF/AIYD6wH7gF+AnwLODu3\naS20Hwb8FpgKvBt4CFgs6ZRcf2nu1+zC8ZE0AVgE3Au8E5gDzJU0s9SfG4G/5HOaC1wLzAAuB8YC\nVwLtdc7HzMz6mKcOmplZI6yOiFvy7xslXQNMAX5fZ5/zScnIyIh4KW/7gqSPAB8l3Wd1CtASEetr\nz13bOY8GRUR09KJ/CyJiUd7vO8AKYG5EPJS33UEaIYP0pE8BTxX2v1nSJaRkqDUitkk6COwsHf8G\n4OGImJsfb5D0dlJi1VZo90hE/DcxzAncRuBPERHAc704JzMz60Me0TIzs0ZYXXq8CRjZwz4TSCNH\nW/P0vF2SdgGnArVpfN8DfippmaQvF6f3HUH/Nuefa0rbjpV0PICk1+epkGslvZj7dSYp8avnbcDj\npW2PA2dIGlTY9udSmzbSaNszeRrmhT2ekZmZ9SknWmZm1gidpcdBz9ekY0gJ2fhSGQu0AETEHOAd\npCmGFwBr88jSkfQv6myr9bkFuAz4KjAp92sNMKSH46jwXMVtZbuLDyJiFSnBnAUMBRZJuq+HY5mZ\nWR/y1EEzM+svVpHuzzoQEe3dNYqIDcAG0sITvwI+BdwP7AcGdbffEZoEtEXE/QCShgGjS226Ov5a\n4IOlbROBDRFxsN4BI2IHsBBYmJOsByWNiIht/9spmJlZlTyiZWZm/cUy0r1Sv5Z0kaTRkiZK+kZe\nWXBoXolvsqRRkj5AWhRjXd6/HRgmaYqkEyS9rsK+/RW4VNL4vAriPRx6jW0HzpX0Fkkn5G23AVMk\nzZI0RtJVwDXUX6gDSddLukLSmZLGAB8DOoCuvifMzMwawImWmZn1C3nRh+nAY8DPSaNW95JGjjYD\nB4E3kVYL3EBaze93wNfy/suBH5NGgbaQVjusyvXAv0mrGy4mrTq4qtRmdu7r3/Lxa1MALweuIK0q\n+HVgdkS09XC8XcCXSPdurczPOz0iXj7iMzEzs0ooXbfMzMzMzMysKh7RMjMzMzMzq5gTLTMzawqS\nPlFctr1Unm50/8zMzA6Hpw6amVlTkHQccGI31Z0R4S/lNTOzfsOJlpmZmZmZWcU8ddDMzMzMzKxi\nTrTMzMzMzMwq5kTLzMzMzMysYk60zMzMzMzMKuZEy8zMzMzMrGJOtMzMzMzMzCrmRMvMzMzMzKxi\n/wGTED65688RRQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x136caeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds4_2_3_699.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail4_2_3_699.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
